#define  _CRT_SECURE_NO_WARNINGS 1
//#include"head.h"

//void* memmove(void* dst, const void* src, size_t num);


//void* my_memmove(void* dst, const void* src, size_t num)
//{
//    assert(dst != NULL && src != NULL);
//    //分情况：
//    // 内存重合时：
//    // 1. dst < src  (src在dst后面) 从前往后
//    // 2. dst > src  (src在dst前面) 从后往前
//    // 内存不重合：
//    // 都可以
//    //
//    void* ret = dst;
//    if (dst < src)
//    {
//        //前-->后
//        while (num--)
//        {
//            *(char*)dst = *(char*)src;
//            src = (char*)src + 1;
//            dst = (char*)dst + 1;
//        }
//    }
//    else
//    {
//        //后-->前
//        while (num--)
//        {
//            *((char*)dst + num) = *((char*)src + num);
//        }
//    }
//    return ret;
//}
//
//void print_arr(int arr[], size_t len)
//{
//    for (size_t i = 0; i < len; i++)
//    {
//        printf("%d ", arr[i]);
//    }
//    printf("\n");
//}
//
//int main()
//{
//	int arr1[] = { 1,2,3,4,5,6,7,8,9,10 };
//    int sz1 = sizeof(arr1) / sizeof(arr1[0]);
//	//memmove(arr1 + 2, arr1, 5 * sizeof(int));
// //   print_arr(arr1, sz1);
//    my_memmove(arr1 + 2, arr1, 5 * sizeof(int));
//    print_arr(arr1, sz1);
//    my_memmove(arr1, arr1 + 2, 5 * sizeof(int));
//    print_arr(arr1, sz1);
//
//	return 0;
//}

